package com.fwx.inner_class;

/**
 * @author : fengwenxiang
 * @date : 2022/5/14 15:14
 * @description：局部内部类(也叫方法内部类)
 */
public class OutClass_PartClass {
    private int outerVar = 1;
    private int commonVar = 2;
    private static int outerStaticVar = 3;
    public void outerMethod(){
        System.out.println("我是外部类的outerMethod方法");
    }
    public static void outerStaticMethod(){
        System.out.println("我是外部类的outerStaticMethod方法");
    }

    /**成员方法中创建局部内部类**/
    public void outerCreateMethod(final int value){
        boolean sex = false;

        /**局部内部类最大特点1.在方法中定义。2.不能有访问修饰符**/
        class Part_Inner{
            private int innerVar = 10;
            private static final int commonVar = 20;

            public void innerShow(){
                //访问形参
                System.out.println("形参value需要被final修饰,和匿名内部类相同 : "+value);
                //访问内部类自身信息
                System.out.println("====访问内部类自身信息=====");
                System.out.println("innerVar : "+innerVar);
                System.out.println("commonVar : "+commonVar);
                //访问外部类信息
                System.out.println("====访问外部类信息,类似成员内部类=====");
                System.out.println("outerVar : "+outerVar);
                System.out.println("OutClass_PartClass.this.commonVar : "+OutClass_PartClass.this.commonVar);
                System.out.println("外部类静态信息直接访问outerStaticVar : "+outerStaticVar);
                outerMethod();
                outerStaticMethod();
            }
        }
        /**局部内部类，方法中创建，也只能在方法中使用**/
        Part_Inner part_inner = new Part_Inner();
        part_inner.innerShow();
    }


}
